﻿#ifndef SCIDRIVER_H
#define SCIDRIVER_H

/************************************************************************************
*SCI type constant definition														*
*As the input parameter of sInitialSci												*
*************************************************************************************/

#define		cSciTypeSci				0			/*		normal sci moule 			*/
#define		cSciTypeIo2Sci			1			/*		io2sci module				*/
#define		cSciTypeCapSci			2			/*		Capsci module				*/
  
/************************************************************************************
*return value of write operation													*
*************************************************************************************/
#define		cSciTxRdy				0
#define		cSciTxBusy				1

/************************************************************************************
*return value of read operation														*
*************************************************************************************/
#define		cSciRxRdy				0
#define		cSciRxBufEmpty			1

/************************************************************************************
*input value of change baudrate														*
*************************************************************************************/
#define		cBaudRate1200			1
#define		cBaudRate2400			2
#define		cBaudRate4800			3
#define		cBaudRate9600			4


/************************************************************************************
*SCI0 ENABLE/DISANLE SWITCH															*
*0:			SCI0 DISABLE															*
*1:			SCI0 ENABLE																*
*************************************************************************************/

#define		SCI_SCI0_EN			1

/************************************************************************************
*SCI1 ENABLE/DISANLE SWITCH															*
*0:			SCI1 DISABLE															*
*1:			SCI1 ENABLE																*
*************************************************************************************/

#define		SCI_SCI1_EN			1

/************************************************************************************
*SCI2 ENABLE/DISANLE SWITCH															*
*0:			SCI2 DISABLE															*
*1:			SCI2 ENABLE																*
*************************************************************************************/

#define		SCI_SCI2_EN			0

/************************************************************************************
*CAPSCI ENABLE/DISANLE SWITCH														*
*0:			CAPSCI DISABLE															*
*1:			CAPSCI ENABLE															*
*************************************************************************************/

/************************************************************************************
*IO2SCI ENABLE/DISANLE SWITCH														*
*0:			IO2SCI DISABLE															*
*1:			IO2SCI ENABLE															*
*************************************************************************************/

#define		SCI_IO2SCI_EN		0

/************************************************************************************
*CAPSCI ENABLE/DISANLE SWITCH														*
*0:			CAPSCI DISABLE															*
*1:			CAPSCI ENABLE															*
*************************************************************************************/

#define		SCI_CAPSCI_EN		0

/************************************************************************************
*Maxmam	Sci Number																	*
*************************************************************************************/

#define		MAX_SCI_NO				4

/************************************************************************************
*Maxmam	Sci buffer size																*
*************************************************************************************/
#define		MAX_SCI_BUF_SIZE		240 //  40*6


/************************************************************************************
*function declaration																*
*************************************************************************************/

extern	void	sInitialSci(INT8U sciid,INT16U wRxSize);
									
extern	void	sSciRxISR(INT8U	sciid);

extern	INT8U	sSciRead(INT8U	sciid,INT8U *pBuf);

extern	void	sSciClearRx(INT8U sciid);

extern	void	sSciTxISR(INT8U sciid);

extern	INT8U	sSciWrite(INT8U sciid,INT8U *pstart,INT8U ubLength);
extern  INT8U	sSciWriteBinary(INT8U sciid,INT8U *pstart,INT16U wLength);

extern	void	sSciClearTx(INT8U sciid);

extern	void	sSciChangeBaudRate(INT8U sciid,INT8U baudrate);

extern	INT8U	sSciGetTxStatus(INT8U sciid);

#if		SCI_CAPSCI_EN==1
extern	void	sCapSciCapISR(void);
#endif

#endif

